#include<iostream>
#include<fstream>
#include<string>
#include<memory>
#include"bundle.h"

int main(int argc,char*argv[])
{
    std::cout << "argv[1]是压缩包名称" << std::endl;
    std::cout << "argv[2]是解压后把内容放到哪个文件" << std::endl;
    if(argc < 3)
        return -1;
    
    std::string ifilename = argv[1]; //压缩包名称
    std::string ofilename = argv[2]; //解压后把内容放到哪个文件

    std::ifstream ifs; // C++ 标准库中用于从文件中读取数据的输入流类
    ifs.open(ifilename,std::ios::binary);
    ifs.seekg(0,std::ios::end);
    size_t fsize = ifs.tellg();
    ifs.seekg(0,std::ios::beg);
    std::string body; 
    body.resize(fsize);
    ifs.read(&body[0],fsize); //读取压缩包的内容保存到body字符串中，读取fsize大小个字节
    ifs.close();

    std::string unpacked = bundle::unpack(body); //unpack是解压，解压并将内容保存到unpacked中
    std::ofstream ofs; //输出流，将内容输出到别的文件中
    ofs.open(ofilename,std::ios::binary);
    ofs.write(&unpacked[0],unpacked.size());
     

    return 0;
}
